"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/3/4 9:51
@Description :  python 中异常的处理
  语法错误     程序无法解决  程序无法执行
  异常        程序运行过程中出现的错误
"""
'''
number = 2
while True:
    number = number ** 2
'''

numbers_list = [1, 2, 3]
print(numbers_list[0])
print(numbers_list[1])
print(numbers_list[2])
# IndexError
# print(numbers_list[3])
print('列表遍历完毕')

# 字典
student_dict = {
    'name': 'tom',
    'age': 30
}

print(student_dict.get('name'))
# KeyError
# print(student_dict['sex'])

# TypeError: 'int' object is not iterable
# var = 2
# for item in var:
#     print(item)

'''
 python中提供了异常处理机制，通过对异常信息的处理，保证主程序的执行，不会让程序在出现异常后停止运行
 try:
    可能出现异常的代码
 except 异常类型1:
    处理异常信息
 except 异常类型2:
    处理异常信息
 ......   异常的顺序需要注意继承关系  大的异常需要写在最后 
else：
     编写try代码块不出现异常时的代码
finally:
     该位置可以编写不管程序是否出现异常均要执行的代码
'''
try:
    print(numbers_list[0])
    print(numbers_list[1])
    print(numbers_list[2])
    print(numbers_list[3])
    #  通过key获取字典中对应的value
    # student_dict['sex']
    # for item in 2:
    #     print(item)
    # result = 1/0
    #    资源释放
except KeyError:
    print('出现异常了,字典中不存在指定的key')

except IndexError as e:
    print(e)
    # print('出现异常了,列表的索引越界')
    pass
except TypeError:
    print('出现异常了,数据不可被迭代')
except Exception:
    print('--------程序异常了-----------')
else:
    print('************程序没有出现异常时执行else中的代码***************')
finally:
    print('-----------资源释放，不管程序是否出现异常都要执行-------------')

print('--------------程序执行结束了------------------')
